{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "30924cdd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预处理成功,词汇表大小: 327\n",
      "开始10倍交叉验证...\n",
      "\n",
      "Fold 1/10\n",
      "Epoch 1/17 - Loss: 0.6883, Val Loss: 0.6974, Val Acc: 0.4000\n",
      "Epoch 2/17 - Loss: 0.6832, Val Loss: 0.6981, Val Acc: 0.4000\n",
      "Epoch 3/17 - Loss: 0.6791, Val Loss: 0.6962, Val Acc: 0.4000\n",
      "Epoch 4/17 - Loss: 0.6810, Val Loss: 0.6938, Val Acc: 0.4000\n",
      "Epoch 5/17 - Loss: 0.6764, Val Loss: 0.6893, Val Acc: 0.5000\n",
      "Epoch 6/17 - Loss: 0.6794, Val Loss: 0.6867, Val Acc: 0.5000\n",
      "Epoch 7/17 - Loss: 0.6622, Val Loss: 0.6824, Val Acc: 0.7000\n",
      "Epoch 8/17 - Loss: 0.6675, Val Loss: 0.6745, Val Acc: 0.7000\n",
      "Epoch 9/17 - Loss: 0.6587, Val Loss: 0.6651, Val Acc: 0.6000\n",
      "Epoch 10/17 - Loss: 0.6285, Val Loss: 0.6573, Val Acc: 0.6000\n",
      "Epoch 11/17 - Loss: 0.6095, Val Loss: 0.6510, Val Acc: 0.6000\n",
      "Epoch 12/17 - Loss: 0.5872, Val Loss: 0.6445, Val Acc: 0.6000\n",
      "Epoch 13/17 - Loss: 0.5702, Val Loss: 0.6337, Val Acc: 0.6000\n",
      "Epoch 14/17 - Loss: 0.5418, Val Loss: 0.6192, Val Acc: 0.6000\n",
      "Epoch 15/17 - Loss: 0.5072, Val Loss: 0.6081, Val Acc: 0.6000\n",
      "Epoch 16/17 - Loss: 0.4566, Val Loss: 0.6008, Val Acc: 0.6000\n",
      "Epoch 17/17 - Loss: 0.4105, Val Loss: 0.5980, Val Acc: 0.6000\n",
      "Fold 1 验证准确率: 0.6000\n",
      "\n",
      "Fold 2/10\n",
      "Epoch 1/17 - Loss: 0.3722, Val Loss: 0.2732, Val Acc: 0.9000\n",
      "Epoch 2/17 - Loss: 0.3300, Val Loss: 0.1931, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.2732, Val Loss: 0.1266, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.2222, Val Loss: 0.1081, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.1584, Val Loss: 0.0592, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.1224, Val Loss: 0.0340, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0733, Val Loss: 0.0283, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0411, Val Loss: 0.0234, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0266, Val Loss: 0.0153, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0176, Val Loss: 0.0091, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0116, Val Loss: 0.0061, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0074, Val Loss: 0.0047, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0059, Val Loss: 0.0038, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0042, Val Loss: 0.0035, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0032, Val Loss: 0.0039, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0032, Val Loss: 0.0056, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0028, Val Loss: 0.0089, Val Acc: 1.0000\n",
      "Fold 2 验证准确率: 1.0000\n",
      "\n",
      "Fold 3/10\n",
      "Epoch 1/17 - Loss: 0.0031, Val Loss: 0.0010, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0014, Val Loss: 0.0009, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0015, Val Loss: 0.0007, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0012, Val Loss: 0.0006, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0010, Val Loss: 0.0006, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0012, Val Loss: 0.0005, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0008, Val Loss: 0.0005, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0007, Val Loss: 0.0004, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0007, Val Loss: 0.0004, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0006, Val Loss: 0.0004, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0006, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0006, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0005, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0007, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0005, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Fold 3 验证准确率: 1.0000\n",
      "\n",
      "Fold 4/10\n",
      "Epoch 1/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0003, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0004, Val Loss: 0.0003, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0004, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0003, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Fold 4 验证准确率: 1.0000\n",
      "\n",
      "Fold 5/10\n",
      "Epoch 1/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Fold 5 验证准确率: 1.0000\n",
      "\n",
      "Fold 6/10\n",
      "Epoch 1/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0003, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Fold 6 验证准确率: 1.0000\n",
      "\n",
      "Fold 7/10\n",
      "Epoch 1/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Fold 7 验证准确率: 1.0000\n",
      "\n",
      "Fold 8/10\n",
      "Epoch 1/17 - Loss: 0.0002, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Fold 8 验证准确率: 1.0000\n",
      "\n",
      "Fold 9/10\n",
      "Epoch 1/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0002, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0001, Val Loss: 0.0001, Val Acc: 1.0000\n",
      "Fold 9 验证准确率: 1.0000\n",
      "\n",
      "Fold 10/10\n",
      "Epoch 1/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 2/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 3/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 4/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 5/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 6/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 7/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 8/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 9/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 10/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 11/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 12/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 13/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 14/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 15/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 16/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Epoch 17/17 - Loss: 0.0001, Val Loss: 0.0002, Val Acc: 1.0000\n",
      "Fold 10 验证准确率: 1.0000\n"
     ]
    },
    {
     "data": {
      "image/png": "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2r59u9Lr9ergwYMqPDxcnT17Viml1DfffKMA9dFHH6l58+bZ2pYtWwpcKzk5WT344IO2c+fPn6/atm2rlFJq7969ymAw2F7r6empjhw5YnucmZmpypcvr9asWaOUUurAgQPKZDIpd3d35erqagusuc3d3V25u7vne3+z2ayUUiohIUEBKjIy0vZcZGRkoX8upk2bZnvNX3/9pdauXauU0gJR3jEfOXKkevjhh1ViYqKqWLGi+v777wsdT6WUslgsasqUKSoxMbHAcxEREQrI99lzpaenq9dff13NmDFD+fr6qoceeki99tprKiEhQa1cuVIFBgaqhISEfG3IkCHq9ddfL3Ct5ORk5ebmpn766SfbsXHjxqmhQ4fme11mZqZKTU295mfJvRagNm7caDt2ozAVEhKiPDw8VGhoqEpMTFTe3t7qww8/zHf+jz/+qPbs2aPmz5+vBg0apHr27HndfgghygZjiU99CSGEHUVHR/PII48wdOhQmjRpQlxcHM8//zwnT57k9OnT7N+/n6eeeoqgoCBSUlKYOnUqkZGRKKXQ6XTF1o9Bgwbxf//3f4wfP54uXbpw+PBhjh49yu7duwkICMj32tw+VKhQwXZs1apVKKVwcHBg7969/P7777zyyiv5llb9/fffbN++nddeew2r1UpiYiJ+fn75ru3m5kb37t35+eefefrpp5k1axZ79+61LadKSUlh06ZNTJgwocBn2LdvH1988QVPP/00ly5donz58gDExsYyZcoUPv74Y5ycnJg/fz7t2rXjqaeeYvbs2YUuY5w6deotjaPFYqFWrVq2x02bNgWgdevW7N69m4ULF1KhQoV8y8MiIiIYNmwYnTp1KjAWa9assT12cHCwfZ93XAuzfPlyKlasyIMPPsj+/fvp168fp06donLlynz00Uf8+uuvbN68+brXyPt+13ouMjKSypUrA9C1a9d856xcuRIHBwfuu+8+Ll26RJUqVQDYtGkTK1asIDg4GA8PDxYvXszAgQNJSUnJt7wyl9FoZObMmdfta2Gys7PZt28fTk5OmM1mzpw5Q3p6OmazGbPZTGRkJN7e3gXOe/HFFwsc+/TTT0lJSWHgwIEFnlu2bFm+xw0aNCA4ONj2+Ny5c7Yxyqtbt275Hj/22GM89thjtsfPP/88s2fPJiYmhkcffZRJkyYRFBTEnDlzcHR0pHXr1syZM4cjR44A8NBDD1GzZk1atGhB/fr1qVev3g1GSAhRFkiYEkKUagEBARw9epSFCxfSpEkTTCaTbT/EBx98QEpKCp6enixduhSArKwsUlNTefXVVzGZTMXal9mzZ9O0aVP8/f15+eWXGTVqFK1bt2bLli2kpqZy7733opRi586djB8/Pt+5/v7+gLYZ/rHHHsNqtTJ+/Hjq1Klje83Bgwf59NNPCQsLY8mSJdSoUaPQfjz88MOMHz+euLg4AgMDmTJlCoMHD+b+++/n119/xWw2M3LkyALnZWdn2/px6dIlKlSoQEpKCg899BCBgYG0aNHCtj9n3rx5DB06lPXr1zNt2jRGjx7Nnj17iI2NtY1r9+7d8+1NKYrcMLFx40a6du0KwDvvvMNff/3Fjh072L59O3v27KFly5a2c4YMGWI77/DhwwwcOBAnJyd0Oh1ffvklHTt2BECn0xWpYERqaiqvv/46X375pe2ztmjRAp1OR3x8PKtXr+aRRx7h8uXLGI1G3NzcClzj/PnzpKWlYTQaSUpKAiAqKsoWRHx9fQt977x/Jq/+ebRt25bjx48zZMgQHn/8cSwWC2FhYVSuXJnXXnuNp556imXLlvHmm2/SpUsX/vzzT3Q6HQaDAU9PT1q1anXDz56Xq6urbY9ZzZo1mTBhgu3PTceOHYmIiLjmuXn3WEVFRfHhhx/yySef8Oijj9pe8+yzz6LX65kzZ47tWGF7Ax0dHQFYtGgRI0eOJCUlBXd393x/RnQ6HUuWLGH48OEA+Pn52c4LDQ0lODiY4OBgPvjgAywWC2vWrCE6Opp169bRuXNnAgICmDFjBqNHj7a9r9VqJSEhodDAKIQoOyRMCSFKvYCAAF566aUCG9/37t1Lq1atuHjxIk5OToD2r/rdu3e3/dKamZlJVlYWRqMRk8lUpNkqq9VKZmYmBoMh3y+/Xl5eTJo0iR9++IFTp06xbt06AH788Ud++eUXIiIiOHjwIOfOneP+++8vcN2dO3fywAMP4Onpybp16wqEpWnTptGyZUtGjx5N06ZN+f77722/TOb10EMPMWHCBBYuXMj//vc/PvvsM1555RXuv/9+5s2bR8uWLWnUqFGB87Kzs3F1dQWwzUx99NFHREZG0rZtW1q0aIHRaEQpRVZWFm+//Tb//vuvrTDCb7/9xqZNm0hJSWH//v1kZGTg6OhIRkYGw4cP55VXXrHNNOWyWCykp6fj7u5uG/vCZo30ej3PPfccQ4YMyRekcq+R+4tz5cqVee+993B2dmbAgAFkZGTYXmc2m4v083377bdJSkpi3759bN68mZUrV3Lw4EGqVauGyWQiPT2dsLAwXnnlFdq3b88///xT4BqzZs3iq6++wmAw2IpU9O7dG6vVSkZGRpEq7F398wgICOCpp56iVatW7N69m5YtW2IwGFBKkZmZyU8//cSbb75p+4xz584lOTmZM2fOUK5cOXbu3AloM5DvvfdeocUfzGYzmZmZuLu7F9qnhIQE3N3dqVat2nX7fu7cOSpWrAjAM888Q+3atZk4cWK+cJ2enk7VqlVtM6DXcqNZxBud17lzZ3799VfatGnD4sWL2bBhAw8++CAAjzzyCKBVAo2MjGTz5s0cOnSIHTt2sH79eh588MFbrsYphCgdpJqfEKJMyMzM5PLly/labrW6xMTEAsdyzZ07F1dXVxwdHdHr9eh0uhs2g8GAs7Mz33//fYF+nD9/nkGDBhEaGmpb3peVlUWlSpUAaNasGRcvXiwQZn755Rc6depEjRo1+PHHH21LFfN69913eeONN9i6dSsuLi4cP3680LHw9PTk0UcfZe7cuWRlZTF79mxWrFjB3r172bp1Ky+88EKh56Wnp2M0av8Glxum3njjDY4cOcKSJUuIj4/nr7/+IikpibS0NPr27cs333zDyy+/DMCbb77J5s2bmTVrFnBllsloNLJmzRouX75se69nnnkGnU6Hg4MDnp6eJCYmFuhLSkoKKSkpttmKRYsWMW3aNHr37s2ZM2dsr83MzLSFZR8fHx599FHuu+++fH0ALSjkhq7r6d+/P4888gguLi6sWLGCqVOnUq1aNTIzM5kwYQKPPfYYly9f5u23375mpcZZs2aRnJzM5cuXefrppwE4evQo0dHRWCyWa84qXj0GeX8eFStW5K+//mLVqlXs37+fM2fOsGPHDpKSkkhMTKR27drs3LnTVulw7dq1bNy4kccffzzfOORWmcz7DwGNGjVCp9Ph5ORUYLlkeno6mZmZfPLJJwQFBZGWloaDgwN///03StubbWu5S+Zyfx5KKebOncuKFSsKzFImJCQUOquXlZWV7+9pcSzH7d+/P+np6Xz00Ud8/vnngFbpcPLkyfTp04ewsDDefvttxowZw7Zt22jc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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "模型训练完成并已保存\n",
      "\n",
      "测试结果:\n",
      "--------------------------------------------------\n",
      "评论: 这部电影太棒了，演员表演出色\n",
      "情感: 正面 (正面概率: 88.42%, 负面概率: 11.58%)\n",
      "--------------------------------------------------\n",
      "评论: 糟糕的剧情，浪费了我的时间\n",
      "情感: 正面 (正面概率: 99.96%, 负面概率: 0.04%)\n",
      "--------------------------------------------------\n",
      "评论: 画面精美但故事薄弱\n",
      "情感: 负面 (正面概率: 2.81%, 负面概率: 97.19%)\n",
      "--------------------------------------------------\n",
      "评论: 强烈推荐，今年最好的电影之一\n",
      "情感: 正面 (正面概率: 92.94%, 负面概率: 7.06%)\n",
      "--------------------------------------------------\n",
      "评论: 导演应该为此感到羞愧\n",
      "情感: 负面 (正面概率: 0.97%, 负面概率: 99.03%)\n",
      "--------------------------------------------------\n",
      "评论: 演员阵容强大，剧本也很扎实\n",
      "情感: 正面 (正面概率: 99.57%, 负面概率: 0.43%)\n",
      "--------------------------------------------------\n",
      "评论: 无聊透顶，差点睡着\n",
      "情感: 负面 (正面概率: 0.07%, 负面概率: 99.93%)\n",
      "--------------------------------------------------\n",
      "评论: 令人难忘的观影体验\n",
      "情感: 正面 (正面概率: 99.99%, 负面概率: 0.01%)\n",
      "--------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "import jieba\n",
    "import re\n",
    "from sklearn.model_selection import KFold\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "from torch.nn.utils.rnn import pad_sequence\n",
    "import pickle\n",
    "import random\n",
    "\n",
    "# 文本预处理函数\n",
    "def clean_text(text):\n",
    "    return re.sub(r'[^\\w\\s]', '', text)\n",
    "\n",
    "def tokensize(text):\n",
    "    return list(jieba.cut(text))\n",
    "\n",
    "stop_words = [\"的\", \"了\", \"和\", \"是\", \"我\", \"在\", \"有\", \"也\", \"就\", \"人\", \"都\"]\n",
    "def remove_stopwords(tokens):\n",
    "    return [token for token in tokens if token not in stop_words]\n",
    "\n",
    "def preprocess_text(text):\n",
    "    cleaned_text = clean_text(text)\n",
    "    tokens = tokensize(cleaned_text)\n",
    "    return remove_stopwords(tokens)\n",
    "\n",
    "# 扩展后的100条电影评论数据集\n",
    "reviews = [\n",
    "    # 正面评价 (50条)\n",
    "    \"这部电影太棒了，演员表演出色\",\n",
    "    \"强烈推荐，今年最好的电影之一\",\n",
    "    \"演员阵容强大，剧本也很扎实\",\n",
    "    \"令人难忘的观影体验\",\n",
    "    \"导演的功力深厚，每个镜头都很有意义\",\n",
    "    \"剧情紧凑，毫无尿点\",\n",
    "    \"特效震撼，完全值回票价\",\n",
    "    \"情感真挚，看得我热泪盈眶\",\n",
    "    \"配乐优美，与剧情完美融合\",\n",
    "    \"结局出乎意料，但非常合理\",\n",
    "    \"主角的成长弧线非常完整\",\n",
    "    \"摄影美得每一帧都能当壁纸\",\n",
    "    \"幽默感恰到好处，不低俗\",\n",
    "    \"主题深刻，发人深省\",\n",
    "    \"节奏把握得很好，两个小时不觉长\",\n",
    "    \"配角也很出彩，没有工具人\",\n",
    "    \"世界观构建完整，细节丰富\",\n",
    "    \"动作戏干净利落，看得很爽\",\n",
    "    \"女性角色塑造得很立体\",\n",
    "    \"原著改编得很成功，书粉满意\",\n",
    "    \"隐喻和象征用得巧妙\",\n",
    "    \"服装设计精致，符合时代背景\",\n",
    "    \"台词精炼，没有废话\",\n",
    "    \"悬念设置合理，解答令人信服\",\n",
    "    \"情感戏细腻不做作\",\n",
    "    \"反派角色有深度，不是单纯的坏\",\n",
    "    \"剪辑流畅，转场自然\",\n",
    "    \"题材新颖，市面上少见\",\n",
    "    \"老少咸宜，适合全家观看\",\n",
    "    \"文化内涵丰富，值得二刷\",\n",
    "    \"表演自然，没有表演痕迹\",\n",
    "    \"场景设计很有创意\",\n",
    "    \"主题曲好听，循环播放中\",\n",
    "    \"长镜头运用令人惊叹\",\n",
    "    \"科幻设定严谨，没有硬伤\",\n",
    "    \"历史还原度高，考据党满意\",\n",
    "    \"笑中带泪，情感丰富\",\n",
    "    \"角色关系处理得很细腻\",\n",
    "    \"立意高远，不流于表面\",\n",
    "    \"画面色彩运用很有风格\",\n",
    "    \"剧本结构精巧，环环相扣\",\n",
    "    \"打光讲究，氛围营造到位\",\n",
    "    \"方言使用恰当，增加真实感\",\n",
    "    \"时代感还原得很好\",\n",
    "    \"情感爆发点处理得当\",\n",
    "    \"角色动机合理，行为符合逻辑\",\n",
    "    \"伏笔回收得很完美\",\n",
    "    \"观影后久久不能平静\",\n",
    "    \"艺术性与商业性平衡得很好\",\n",
    "    \n",
    "    # 负面评价 (50条)\n",
    "    \"糟糕的剧情，浪费了我的时间\",\n",
    "    \"画面精美但故事薄弱\",\n",
    "    \"导演应该为此感到羞愧\",\n",
    "    \"无聊透顶，差点睡着\",\n",
    "    \"逻辑漏洞太多，无法入戏\",\n",
    "    \"演员表演生硬，像在念台词\",\n",
    "    \"特效五毛，看着尴尬\",\n",
    "    \"剧情老套，毫无新意\",\n",
    "    \"节奏拖沓，看得想快进\",\n",
    "    \"主角光环太强，毫无挑战\",\n",
    "    \"配乐滥用，吵得头疼\",\n",
    "    \"结局烂尾，虎头蛇尾\",\n",
    "    \"角色行为不合逻辑\",\n",
    "    \"摄影晃得头晕\",\n",
    "    \"笑点尴尬，强挠痒痒\",\n",
    "    \"主题空洞，说教味浓\",\n",
    "    \"剪辑混乱，看不懂时间线\",\n",
    "    \"女性角色全是花瓶\",\n",
    "    \"世界观设定自相矛盾\",\n",
    "    \"动作戏全是慢镜头\",\n",
    "    \"原著被魔改，书粉愤怒\",\n",
    "    \"隐喻太刻意，显得做作\",\n",
    "    \"服装穿越，不符合年代\",\n",
    "    \"台词矫情，听着起鸡皮疙瘩\",\n",
    "    \"悬念揭晓令人失望\",\n",
    "    \"情感戏假大空\",\n",
    "    \"反派弱智，毫无威胁\",\n",
    "    \"转场生硬，像PPT切换\",\n",
    "    \"题材老旧，毫无新意\",\n",
    "    \"儿童不宜，误导青少年\",\n",
    "    \"文化刻板印象严重\",\n",
    "    \"表演夸张，像舞台剧\",\n",
    "    \"场景廉价，像电视剧\",\n",
    "    \"主题曲难听，毁耳朵\",\n",
    "    \"长镜头无意义，纯炫技\",\n",
    "    \"科幻设定漏洞百出\",\n",
    "    \"历史错误太多，误导观众\",\n",
    "    \"强行煽情，尴尬至极\",\n",
    "    \"角色关系莫名其妙\",\n",
    "    \"立意肤浅，像中学生作文\",\n",
    "    \"画面色调难看，伤眼睛\",\n",
    "    \"剧本散乱，主线不明\",\n",
    "    \"打光死亡，人脸惨白\",\n",
    "    \"方言难懂，影响理解\",\n",
    "    \"时代细节错误百出\",\n",
    "    \"情感爆发点突兀\",\n",
    "    \"角色动机不明，行为迷惑\",\n",
    "    \"伏笔忘记回收\",\n",
    "    \"观影后毫无感触\",\n",
    "    \"商业铜臭味太重\",\n",
    "    \"艺术片不像艺术片，商业片不像商业片\"\n",
    "]\n",
    "\n",
    "# 对应的标签 (1:正面, 0:负面)\n",
    "labels = [1]*50 + [0]*50\n",
    "\n",
    "# 预处理所有数据\n",
    "preprocessed_reviews = [preprocess_text(review) for review in reviews]\n",
    "\n",
    "# 生成词汇表\n",
    "def build_vocab(reviews):\n",
    "    vocab = set()\n",
    "    for review in reviews:\n",
    "        vocab.update(review)\n",
    "    vocab = {word: idx for idx, word in enumerate(vocab, start=2)}\n",
    "    vocab['<unk>'] = 0\n",
    "    vocab['<pad>'] = 1\n",
    "    return vocab\n",
    "\n",
    "# 将文本转换为索引\n",
    "def text_to_indices(tokens, vocab):\n",
    "    return [vocab.get(token, vocab[\"<unk>\"]) for token in tokens]\n",
    "\n",
    "# 数据预处理\n",
    "vocab = build_vocab(preprocessed_reviews)\n",
    "indexed_reviews = [text_to_indices(review, vocab) for review in preprocessed_reviews]\n",
    "print(f\"预处理成功,词汇表大小: {len(vocab)}\")\n",
    "\n",
    "# 转换为PyTorch张量\n",
    "tensors = [torch.tensor(review, dtype=torch.long) for review in indexed_reviews]\n",
    "X_padded = pad_sequence(tensors, batch_first=True, padding_value=1)\n",
    "y_tensor = torch.tensor(labels, dtype=torch.long)\n",
    "\n",
    "# 定义LSTM模型\n",
    "class SentimentLSTM(nn.Module):\n",
    "    def __init__(self, vocab_size, embed_dim, hidden_dim):\n",
    "        super(SentimentLSTM, self).__init__()\n",
    "        self.embedding = nn.Embedding(vocab_size, embed_dim)\n",
    "        self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True)\n",
    "        self.fc = nn.Linear(hidden_dim, 2)\n",
    "        self.dropout = nn.Dropout(0.3)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        embedded = self.embedding(x)\n",
    "        lstm_out, (hidden, _) = self.lstm(embedded)\n",
    "        hidden = self.dropout(hidden[-1])\n",
    "        return self.fc(hidden)\n",
    "\n",
    "# 初始化模型\n",
    "vocab_size = len(vocab)\n",
    "embed_dim = 100  # 增加嵌入维度\n",
    "hidden_dim = 128  # 增加隐藏层维度\n",
    "model = SentimentLSTM(vocab_size, embed_dim, hidden_dim)\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "optimizer = optim.Adam(model.parameters(), lr=0.001)\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "# Initialize fold_results before the cross-validation loop\n",
    "fold_results = []\n",
    "best_val_accuracy = 0\n",
    "best_model_state = None\n",
    "\n",
    "# Initialize KFold\n",
    "kf = KFold(n_splits=10, shuffle=True, random_state=42)\n",
    "\n",
    "# 修改第一次交叉验证的训练循环，记录损失值\n",
    "first_fold_train_losses = []\n",
    "first_fold_val_losses = []\n",
    "\n",
    "print(\"开始10倍交叉验证...\")\n",
    "for fold, (train_idx, val_idx) in enumerate(kf.split(X_padded)):\n",
    "    print(f\"\\nFold {fold + 1}/10\")\n",
    "    \n",
    "    X_train, X_val = X_padded[train_idx], X_padded[val_idx]\n",
    "    y_train, y_val = y_tensor[train_idx], y_tensor[val_idx]\n",
    "    \n",
    "    # 训练模型,训练轮次\n",
    "    num_epochs = 17\n",
    "    for epoch in range(num_epochs):\n",
    "        model.train()\n",
    "        optimizer.zero_grad()\n",
    "        outputs = model(X_train)\n",
    "        loss = criterion(outputs, y_train)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "        # 验证\n",
    "        model.eval()\n",
    "        with torch.no_grad():\n",
    "            val_outputs = model(X_val)\n",
    "            val_loss = criterion(val_outputs, y_val)\n",
    "            _, predicted = torch.max(val_outputs, 1)\n",
    "            correct = (predicted == y_val).sum().item()\n",
    "            val_accuracy = correct / len(y_val)\n",
    "            \n",
    "            # 保存最佳模型\n",
    "            if val_accuracy > best_val_accuracy:\n",
    "                best_val_accuracy = val_accuracy\n",
    "                best_model_state = model.state_dict()\n",
    "        \n",
    "        # 如果是第一次交叉验证，记录损失值\n",
    "        if fold == 0:\n",
    "            first_fold_train_losses.append(loss.item())\n",
    "            first_fold_val_losses.append(val_loss.item())\n",
    "        \n",
    "        # 打印训练进度\n",
    "        print(f\"Epoch {epoch+1}/{num_epochs} - \"\n",
    "              f\"Loss: {loss.item():.4f}, \"\n",
    "              f\"Val Loss: {val_loss.item():.4f}, \"\n",
    "              f\"Val Acc: {val_accuracy:.4f}\")\n",
    "    \n",
    "    # 记录结果\n",
    "    fold_results.append(val_accuracy)\n",
    "    print(f\"Fold {fold + 1} 验证准确率: {val_accuracy:.4f}\")\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "\n",
    "# 设置支持中文的字体\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题\n",
    "\n",
    "# 绘制第一次交叉验证的损失曲线\n",
    "plt.figure(figsize=(10, 6))\n",
    "plt.plot(range(1, num_epochs+1), first_fold_train_losses, label='训练损失')\n",
    "plt.plot(range(1, num_epochs+1), first_fold_val_losses, label='验证损失')\n",
    "plt.xlabel('训练轮次 (Epoch)')\n",
    "plt.ylabel('损失值 (Loss)')\n",
    "plt.title('第一次交叉验证的训练和验证损失曲线')\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.show()\n",
    "\n",
    "# 保存最佳模型\n",
    "torch.save({\n",
    "    'model_state_dict': best_model_state,\n",
    "    'vocab': vocab,\n",
    "    'model_config': {\n",
    "        'vocab_size': vocab_size,\n",
    "        'embed_dim': embed_dim,\n",
    "        'hidden_dim': hidden_dim\n",
    "    }\n",
    "}, 'best_sentiment_model.pth')\n",
    "\n",
    "# 保存词汇表\n",
    "with open('vocab.pkl', 'wb') as f:\n",
    "    pickle.dump(vocab, f)\n",
    "\n",
    "print(\"\\n模型训练完成并已保存\")\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "import torch\n",
    "import pickle\n",
    "from torch.nn.utils.rnn import pad_sequence\n",
    "import torch.nn as nn\n",
    "import jieba\n",
    "import re\n",
    "\n",
    "# 加载词汇表\n",
    "with open('vocab.pkl', 'rb') as f:\n",
    "    vocab = pickle.load(f)\n",
    "\n",
    "# 加载模型 - 使用 weights_only=True 增强安全性\n",
    "try:\n",
    "    model_info = torch.load('best_sentiment_model.pth', weights_only=True)\n",
    "except RuntimeError as e:\n",
    "    print(\"安全加载失败，尝试传统方式加载:\", str(e))\n",
    "    model_info = torch.load('best_sentiment_model.pth', weights_only=False)  # 回退到传统方式\n",
    "\n",
    "model_config = model_info['model_config']\n",
    "\n",
    "# 重新创建模型结构\n",
    "class SentimentLSTM(nn.Module):\n",
    "    def __init__(self, vocab_size, embed_dim, hidden_dim):\n",
    "        super(SentimentLSTM, self).__init__()\n",
    "        self.embedding = nn.Embedding(vocab_size, embed_dim)\n",
    "        self.lstm = nn.LSTM(embed_dim, hidden_dim, batch_first=True)\n",
    "        self.fc = nn.Linear(hidden_dim, 2)\n",
    "        self.dropout = nn.Dropout(0.3)\n",
    "        \n",
    "    def forward(self, x):\n",
    "        embedded = self.embedding(x)\n",
    "        lstm_out, (hidden, _) = self.lstm(embedded)\n",
    "        hidden = self.dropout(hidden[-1])\n",
    "        return self.fc(hidden)\n",
    "\n",
    "model = SentimentLSTM(**model_config)\n",
    "model.load_state_dict(model_info['model_state_dict'])\n",
    "model.eval()  # 设置为评估模式\n",
    "\n",
    "# 测试集\n",
    "test_reviews = [\n",
    "    \"这部电影太棒了，演员表演出色\",\n",
    "    \"糟糕的剧情，浪费了我的时间\",\n",
    "    \"画面精美但故事薄弱\",\n",
    "    \"强烈推荐，今年最好的电影之一\",\n",
    "    \"导演应该为此感到羞愧\",\n",
    "    \"演员阵容强大，剧本也很扎实\",\n",
    "    \"无聊透顶，差点睡着\",\n",
    "    \"令人难忘的观影体验\"\n",
    "]\n",
    "\n",
    "# 预处理函数 (需要与训练时相同)\n",
    "def clean_text(text):\n",
    "    return re.sub(r'[^\\w\\s]', '', text)\n",
    "\n",
    "def tokensize(text):\n",
    "    return list(jieba.cut(text))\n",
    "\n",
    "stop_words = [\"的\", \"了\", \"和\", \"是\", \"我\", \"在\", \"有\", \"也\", \"就\", \"人\", \"都\"]\n",
    "def remove_stopwords(tokens):\n",
    "    return [token for token in tokens if token not in stop_words]\n",
    "\n",
    "def preprocess_text(text):\n",
    "    cleaned_text = clean_text(text)\n",
    "    tokens = tokensize(cleaned_text)\n",
    "    return remove_stopwords(tokens)\n",
    "\n",
    "def text_to_indices(tokens, vocab):\n",
    "    return [vocab.get(token, vocab[\"<unk>\"]) for token in tokens]\n",
    "\n",
    "# 预处理测试数据\n",
    "preprocessed_test = [preprocess_text(review) for review in test_reviews]\n",
    "indexed_test = [text_to_indices(review, vocab) for review in preprocessed_test]\n",
    "\n",
    "# 转换为张量并填充\n",
    "test_tensors = [torch.tensor(review, dtype=torch.long) for review in indexed_test]\n",
    "X_test = pad_sequence(test_tensors, batch_first=True, padding_value=1)\n",
    "\n",
    "# 进行预测\n",
    "with torch.no_grad():\n",
    "    outputs = model(X_test)\n",
    "    _, predicted = torch.max(outputs, 1)\n",
    "    probabilities = torch.softmax(outputs, dim=1)\n",
    "\n",
    "# 打印预测结果\n",
    "print(\"\\n测试结果:\")\n",
    "print(\"-\" * 50)\n",
    "for i, review in enumerate(test_reviews):\n",
    "    sentiment = \"正面\" if predicted[i] == 1 else \"负面\"\n",
    "    pos_prob = probabilities[i][1].item() * 100\n",
    "    neg_prob = probabilities[i][0].item() * 100\n",
    "    print(f\"评论: {review}\")\n",
    "    print(f\"情感: {sentiment} (正面概率: {pos_prob:.2f}%, 负面概率: {neg_prob:.2f}%)\")\n",
    "    print(\"-\" * 50)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
